const express = require('express');
const static = require('express-static');
const cookieParser = require('cookie-parser');
const cookieSession = require('cookie-session');
// !bodyParser不能解析文件上传,只能解析普通post请求
const bodyParser = require('body-parser');
const multer = require('multer');
// const ejs = require('ejs');
// const jade = require('jade');
// !有了下面这个就不需要引用模板了
const consolidate = require('consolidate');
const mysql = require('mysql');

//  创建连接池
const db = mysql.createPool({
    host: 'localhost',
    user: 'root',
    password: '123456',
    database: 'test_xm'
});

const server = express();

server.listen(8080, () => {
    console.log('服务启动成功!');
});

//! 1解析cookie
server.use(cookieParser('sdfasdfadsf'));

//! 2使用session
var arr = [];
for (let i = 0; i < 1000000; i++) {
    arr.push('keys_' + Math.random());
}
server.use(cookieSession({ name: 'user', keys: arr, maxAge: 20 * 3600 * 1000 }));

//! 3解析post数据 解析urlencode和mutilpart数据
server.use(bodyParser.urlencoded({ extends: false }));

server.use(multer({ dest: './www/upload/' }).any());

//! 配置模板引擎
// 1输出什么东西
server.set('view engine', 'html');
// 模板引擎放在哪儿
server.set('views', './template');
// 哪种模板引擎
server.engine('html', consolidate.ejs);

//! 用户请求
server.get('/', (req, res, next) => {
    db.query("SELECT * FROM `banner_table`", (err, data) => {
        if (err) {
            res.status(500).send('databases error').end();
        } else {
            next();
            res.banners = data;
            // res.render('index.ejs', { banners: data })
        }
    })
});
// 查询新闻列表
server.get('/', (req, res) => {
    db.query("SELECT title, summary FROM `article_table`", (err, data) => {
        if (err) {
            console.log(err);
            res.status(500).send('databases error').end();
        } else {
            res.render('index.ejs', { banners: res.banners, list: data});
        }
    })
});

//! 4读取静态文件
server.use(static('./www'));